Micron Document
`:top
En `F33f`_`[langage Java`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Langage_Java]`_`f, le mot-clé `B100`F9d9`!final`!`f`b indique qu'un élément ne peut être changé dans la suite du programme. Il peut s'appliquer aux `F33f`_`[méthodes`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Méthode_(informatique)]`_`f et `F33f`_`[attributs`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Attribut_(informatique)]`_`f d'une `F33f`_`[classe`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Classe_(informatique)]`_`f et à la classe elle-même. Aussi, il peut s'appliquer sur les paramètres d'une méthode et sur les variables locales. Selon le contexte, on utilise `B100`F9d9final`f`b dans un souci de conception ou d'optimisation.

Il est aussi utilisé avec le même rôle en `F33f`_`[PHP`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=PHP]`_`f depuis la version 5 (en 2004)`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f].

>>Contents

• `F0af`_`[Méthodes`#m-thodes]`_`f
• `F0af`_`[Attributs de classe ou d'objet`#attributs-de-classe-ou-d-objet]`_`f
• `F0af`_`[Classes`#classes]`_`f
• `F0af`_`[Paramètres de méthode`#param-tres-de-m-thode]`_`f
• `F0af`_`[Variables locales`#variables-locales]`_`f
• `F0af`_`[Voir aussi`#voir-aussi]`_`f
• `F0af`_`[Articles connexes`#articles-connexes]`_`f
• `F0af`_`[Liens externes`#liens-externes]`_`f
• `F0af`_`[Notes et références`#notes-et-r-f-rences]`_`f
• `F0af`_`[Références`#r-f-rences]`_`f

-─

>>Méthodes

Une méthode indiquée comme `B100`F9d9final`f`b ne peut être redéfinie dans une classe dérivée.

Exemple :

`B100`F9d9public class MaClass {`f`b
`B100`F9d9 public final void uneMethode() {`f`b
`B100`F9d9 ...`f`b
`B100`F9d9 }`f`b
`B100`F9d9}`f`b

On peut s'en servir pour forcer le comportement d'une méthode dans les sous-classes.

>>Attributs de classe ou d'objet

Appliqué à un attribut de type primitif, ce dernier devient une constante. L'affectation doit être effectuée, au plus tard, dans le constructeur de la classe. Le fonctionnement est un peu différent sur un type objet : c'est la référence vers l'objet qui devient constante et non sa valeur. Ce dernier point s'applique également aux tableaux qui sont aussi des références.

Exemple :

`B100`F9d9public final class MaClass {`f`b
`B100`F9d9 public final double PI = 3.14159; // Impossible de modifier la valeur`f`b
`B100`F9d9 public final double[] tailles = {50.2, 60.8};`f`b
`B100`F9d9`f`b
`B100`F9d9 public void uneMethode() {`f`b
`B100`F9d9 tailles[0] = 99; // fonctionne car tailles est une référence sur un tableau`f`b
`B100`F9d9 }`f`b
`B100`F9d9}`f`b

>>Classes

Les classes `B100`F9d9final`f`b ne peuvent être dérivées.

Exemple :

`B100`F9d9public final class ClasseFinal {`f`b
`B100`F9d9 ...`f`b
`B100`F9d9}`f`b

Cela peut être fait dans un souci d'efficacité ou pour empêcher l'utilisateur d'en faire une utilisation non appropriée dans la classe dérivée.

De nombreuses classes de la bibliothèque standard Java sont déclarées comme `B100`F9d9final`f`b telles que `B100`F9d9java.lang.System`f`b`:cite-ref-2[`F5bf`_`[2`#cite-note-2]`_`f] ou `B100`F9d9java.lang.String`f`b`:cite-ref-3[`F5bf`_`[3`#cite-note-3]`_`f].

>>Paramètres de méthode

Le mot clef final peut aussi être utilisé pour le paramètre d'une méthode dont on est sûr qu'elle ne va pas changer de référence :

`B100`F9d9public static int addition(final int a, final int b){`f`b
`B100`F9d9 return a + b;`f`b
`B100`F9d9}`f`b

>>Variables locales

Une autre utilisation du mot clef final est dans les variables locales. Elle suit la même règle, c'est-à-dire qu'on est sûr que la variable ne va pas changer.

`B100`F9d9public static int ajouterCinq(final int a){`f`b
`B100`F9d9 final int b = 5;`f`b
`B100`F9d9 return a + b;`f`b
`B100`F9d9}`f`b

>>Voir aussi

>>>Articles connexes

• `F33f`_`[Langage de programmation Java`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java_(langage)]`_`f

>>>Liens externes

• « Article sur le mot-clé final », `F33f`_`[Developpez.com`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Developpez.com]`_`f

>>Notes et références

>>>Références

`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f « Manual », sur php.net (consulté le 14 novembre 2023).
`:cite-note-2`!2.`! `F0af`_`[↑`#cite-ref-2]`_`f (en) « Class System », docs.oracle.com.
`:cite-note-3`!3.`! `F0af`_`[↑`#cite-ref-3]`_`f (en) « Class String », docs.oracle.com.

• Portail de la programmation informatique

`c`F0af`_`[↑ Back to top`#top]`_`f`a